package com.bluebridgecup.FundamentalsofDataStructures.linkedList;

import java.util.Scanner;

public class LRShiftArrayProcessor {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 读取第一个整数n，表示链表中元素的初始数量
        int n = in.nextInt();
        // 使用数组模拟链表，l[i]表示元素i左边的元素，r[i]表示元素i右边的元素
        int[] l = new int[n + 5], r = new int[n + 5];
        // 读取第二个整数m，表示操作的次数
        int m = in.nextInt();

        // 初始化链表数据
        for (int j = 1; j <= n; j++) {//初始化链表数据
            l[j] = j - 1;
            r[j] = j + 1;
        }
        // 最后一个元素的右边元素设为0，表示链表结尾
        r[n] = 0;

        // 头指针指向第一个元素
        int head = 1;
        // 尾指针指向最后一个元素
        int tail = n;

        // 进行m次操作
        for (int i = 0; i < m; i++) {
            // 读取操作类型，“L”表示添加到头部，其他表示添加到尾部
            String s = in.next();
            // 读取要操作的元素x
            int x = in.nextInt();

            // 如果元素x为头结点，则更新头指针，为删除元素x做准备
            if (x == head) {
                head = r[x];
            } else if (x == tail) {
                tail = l[x];//如果元素x为尾节点，则更新尾指针，为删除元素x做准备

            }
            // 删除元素x
            // 将x左边元素的右指针指向x右边的元素
            r[l[x]] = r[x];
            // 将x右边元素的左指针指向x左边的元素
            l[r[x]] = l[x];

            if (s.equals("L")) {
                // 将原来元素添加到链表头部
                // 原来头结点的左指针指向x
                l[head] = x;
                // x的左指针设为0，表示x是新的头结点，左边没有元素
                l[x] = 0;
                // x的右指针指向原来的头结点
                r[x] = head;
                // 更新头指针为x
                head = x;
            } else {
                // 将元素x添加到链表尾部
                // 原来尾结点的右指针指向x
                r[tail] = x;
                // x的左指针指向原来的尾结点
                l[x] = tail;
                // x的右指针设为0，表示x是新的尾结点，右边没有元素
                r[x] = 0;
                // 更新为指针为x
                tail = x;
            }
        }
        in.close();

        // 遍历
        while (head != 0) {
            // 输出当前结点的值
            System.out.print(head + " ");
            // 移动到下一个结点
            head = r[head];
        }

    }
}
